1. Field of the Invention
The present invention relates to virtual environments and, more particularly, to a method and apparatus for enhancing control of an Avatar in a three dimensional computer-generated virtual environment.
2. Description of the Related Art
Virtual environments simulate actual or fantasy 3-D environments and allow for many participants to interact with each other and with constructs in the environment via remotely-located clients. One context in which a virtual environment may be used is in connection with gaming, although other uses for virtual environments are also being developed.
In a virtual environment, an actual or fantasy universe is simulated within a computer processor/memory. A virtual environment may be implemented as a stand-alone application, such as a computer aided design package or a computer game. Alternatively, the virtual environment may be implemented on-line so that multiple people may participate in the virtual environment through a computer network, such as a local area network or a wide area network such as the Internet. Users are represented in a virtual environment by an “Avatar” which is often a three-dimensional representation of a person or other object to represent them in the virtual environment. Participants interact with the virtual environment software to control how their Avatars move within the virtual environment. The participant may control the Avatar using conventional input devices, such as a computer mouse and keyboard or optionally may use more specialized controls such as a gaming controller.
As the Avatar moves within the virtual environment, the view experienced by the Avatar changes according to where the Avatar is located within the virtual environment. The views may be displayed to the participant so that the participant controlling the Avatar may see what the Avatar is seeing. Additionally, many virtual environments enable the participant to toggle to a different point of view, such as from a vantage point outside (i.e. behind) the Avatar, to see where the Avatar is in the virtual environment. An Avatar may be allowed to walk, run, swim, and make other gross motor movements within the virtual environment. The Avatar may also be able to perform fine motor skills such as be allowed to pick up an object, throw an object, use a key to open a door, and perform other similar tasks.
Virtual environments are commonly used in on-line and stand-alone gaming, such as for example in role playing games where a user assumes the role of a character and takes control over most of that character's actions. In addition to games, virtual environments are also being used to simulate real life environments to provide an interface for users that will enable on-line education, training, shopping, and other types of interactions between groups of users and between businesses and users.
Animation of the Avatar's movements involves three dimensional computer animation. To animate an Avatar, a stick-figure or skeleton representation will be used. Each segment of the skeletal model is defined by an animation variable, which is commonly referred to as an Avar. The collection of Avars defines the Avatar's skeleton and, hence, define how parts of the Avatar's model can move. The skeletal model also restricts movement of the Avatar to prevent the Avatar from assuming unrealistic positions or engaging in unrealistic motion. The skeletal model itself is invisible and not rendered. Rather, the position of the Avars defines the position and orientation of the Avatar within the virtual environment. To get a three dimensional representation of the Avatar, a skin is defined around the skeletal model. Although the use of skeletal animation is commonly used, other ways of animating exist as well.
To enable the Avatar to move within the three dimensional virtual environment, the animator will manipulate the Avars directly. Movement of the Avars causes movement of the Avatar which, when wrapped with the skin, causes the three dimensional model of the Avatar to appear to move.
Movement of an object is actually a series of frames that shows the object in slightly different positions. By showing the frames sufficiently rapidly, such as at 30 or 60 frames per second, the object may appear to move in a continuous manner. Movement of an Avatar is accomplished in this same way. However, rather than defining the position of every Avar for every frame, key positions of the Avars will be defined at strategic points in the animation sequence (referred to as keyframes) and the computer will interpolate between the key positions to determine the precise position of the Avars at every frame. The process of interpolating between keyframes is commonly referred to as “Tweening”, which refers to the computer determining the position in between keyframes.
When a user controls an Avatar in a virtual environment, the user activates sequences of Avar movements, which causes the Avatar to move through specified sequences of keyframes. The Avatar will appear to execute the desired motion as the computer moves the Avatar through the predefined sequence of keyframes. Thus, although the user may direct the Avatar's actions within the virtual environment, the user does not actually control the Avatar's movements. Rather, the user selects a particular animation sequence which will enable the user to make a particular movement. The movement itself, however, is defined by the keyframes associated with the animation sequence and, hence, the actual movement of the Avatar is controlled by the virtual environment program.
For example, assume that the virtual environment is set up so that the mouse controls where the Avatar walks in the virtual environment. When the user places their mouse cursor over a particular area, the Avatar will walk toward the area. Then user is thus “directing” the Avatar's action within the virtual environment since they control where the Avatar walks within the virtual environment. However, the user is not controlling the Avatar's actions, since the user is not actually controlling how the Avatar moves their legs, feet, etc. When the user directs the Avatar to take a step, the virtual environment client will cause the Avars of the Avatar to move through a sequence that will cause the skeleton and, hence the Avatar, to appear to execute a step motion. The actual step motion, i.e. the sequence of keyframes, is provided by the computer without input from the user. Thus, the actual walking motion and other actions of the Avatar are generated by the computer using particular animation sequences. Although the user provides input to tell the virtual environment what the Avatar should do, and the actual movement or action of the Avatar is implemented by the virtual environment server.
Using canned action sequences to be implemented when the user provides particular input is useful, since it makes it easier for the user to learn how to navigate within the virtual environment and makes it easier for the user to control the Avatar's gross motor actions in the virtual environment. However, since the Avatar's actions are not individually controllable by the user, the types of movement in which an Avatar may engage are limited according to selection from the available canned action sequences. As virtual environments become more sophisticated, and Avatars become more expressive, it would be advantageous to more directly control how Avatars can operate in a three dimensional computer-generated virtual environment.